package model;

public class SearchSpecifications {
	public enum SearchCategory {
		Título, Tema, Categoria, Descrição, Autor
	}

	private int numberOfReturns;
	private int pageNumber;
	private SearchCategory category;

	public SearchSpecifications(int numberOfReturns, int pageNumber, SearchCategory category) throws Exception {
		super();
		setNumberOfReturns(numberOfReturns);
		setPageNumber(pageNumber);
		setCategory(category);
	}

	public int getNumberOfReturns() {
		return numberOfReturns;
	}

	public int getPageNumber() {
		return pageNumber;
	}

	public SearchCategory getCategory() {
		return category;
	}

	public void setNumberOfReturns(int numberOfReturns) throws Exception {
		if (numberOfReturns > 0) {
			this.numberOfReturns = numberOfReturns;
		} else {
			throw new Exception("O número requirido de items precisa ser maior que zero!");
		}
	}

	public void setPageNumber(int pageNumber) throws Exception {
		if (pageNumber > 0) {
			this.pageNumber = pageNumber;
		} else {
			throw new Exception("O número da página precisa ser maior que zero!");
		}
	}

	public void setCategory(SearchCategory category) throws Exception {
		if (category.ordinal() > -1 && category.ordinal() < SearchCategory.values().length) {
			this.category = category;
		} else {
			throw new Exception("Categoria de Busca não existe!");
		}

	}
}
